<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function 构造函数名(形参1, 形参2, 形参3) { // 构造函数的形参与对象的普通属性是一般一致的
            this.属性名1 = 形参1;
            this.属性名2 = 形参2; // 属性的值，一般是通过同名的形参来赋值的
            this.属性名3 = 形参3;
            this.方法名 = function () {

            };
        }
        // 调用
        const obj = new 构造函数名(实参1, 实参2, 实参3)

        // 简记
        function 构造函数名() {
            this.属性 = 值; // 当前的这个对象的
            this.方法 = function () {}
        }
        const p = new 构造函数名();


        // 实例化： 通过构造函数创建对象的过程，实例化
        // 实例: 创建好的那个对象，具体的对象，叫做实例

        function Star(name, age){
            // 属性
            this.name = name 
            this.age = age 
            // 方法
            this.sayHi = function(){
                console.log('hi')
            }
            // return  {} 
        }
        const zjl = new Star('周杰伦', 18)
        console.log(zjl)


        // function fn(){
        //     console.log('hi')
        //     return 888
        // }
        // const res = fn()
        // console.log(res)



        // 注意: 
        // 1. 构造函数名字首字母要大写
        // 2. 构造函数里 属性和方法前面必须添加 this
        // 2. 构造函数不需要 return 就可以返回结果
        // 3. 我们调用构造函数 必须使用 new

        // ==> 构造函数,相当于一个模板,通过构造函数创建的对象都具有相同的属性和方法
        // ==> new 一个对象的过程,也叫作实例化
    </script>
</body>

</html>